home *** CD-ROM | disk | FTP | other *** search
/ Family Forum 261 / SOMC Family Forum 261.iso / Xtras / Animation Wizard.dir / 00010_Script_Credits < prev    next >
Text File  |  1997-05-10  |  19KB  |  552 lines

  1. -- Credits script
  2.  
  3. property ioFieldList
  4. property iFieldFocus
  5. property ioFieldFocus
  6. property iCurrentMotionStyleIndex
  7. property iCurrentVisualStyleIndex
  8.  
  9. -- The motion styles are:
  10. property ikMotionScrollingUp  -- 1
  11. property ikMotionIndividual  -- 2
  12.  
  13. property iFirstTIme
  14. property iSaveSeconds
  15. property iSaveFPS
  16. property iSaveDelayEnter
  17. property iSaveDelayHold
  18. property iSaveMark
  19. property iSaveCycles
  20.  
  21.  
  22. on birth me
  23.   global goCreditsText
  24.   global goSeconds
  25.   global goFPS
  26.   global goDelayEnter
  27.   global goDelayHold
  28.   -- global goCycles
  29.   
  30.   set ioFieldList = [goCreditsText, goSeconds, goFPS, goDelayEnter, goDelayHold]
  31.   set ikMotionScrollingUp = 1
  32.   set ikMotionIndividual = 2
  33.   
  34.   set iCurrentMotionStyleIndex = ikMotionScrollingUp
  35.   set iCurrentVisualStyleIndex = 1
  36.   set iFieldFocus = 1
  37.   set iFirstTime = TRUE
  38.   
  39.   return me
  40. end birth
  41.  
  42. on mInit me
  43.   global goSeconds
  44.   global goFPS
  45.   global goDelayEnter
  46.   global goDelayHold
  47.   --global goCycles
  48.   global goCredits
  49.   global goMarkFrame
  50.   global goVisualStyles
  51.   global goMotionStyles
  52.   global goScoreMgr
  53.   global goAnimateTitle
  54.   
  55.   -- CheckMark parameter: channel
  56.   mInit(goMarkFrame, 4)  -- channel
  57.   
  58.   if iFirstTime then  -- use intellegent defaults
  59.     mSetValue(goSeconds, 5)
  60.     mSetValue(goFPS, 5)
  61.     mSetValue(goDelayEnter, 5)
  62.     mSetValue(goDelayHold, 0)
  63.     --  mSetValue(goCycles, 1)
  64.     mSetValue(goMarkFrame, TRUE)
  65.     set iFirstTime = FALSE
  66.   else  -- use values saved from when we last left
  67.     mSetValue(goSeconds, iSaveSeconds)
  68.     mSetValue(goFPS, iSaveFPS)
  69.     mSetValue(goDelayEnter, iSaveDelayEnter)
  70.     mSetValue(goDelayHold, iSaveDelayHold)
  71.     --mSetValue(goCycles, iSaveCycles)
  72.     mSetValue(goMarkFrame, iSaveMark)
  73.   end if
  74.   
  75.   set ioFieldFocus = GetAt(ioFieldList, iFieldFocus)
  76.   
  77.   -- RadioButtons parameters: channel, nChannels, rightAnswer, default
  78.   set goMotionStyles = 0
  79.   set goMotionStyles = birth(script "RadioButton",  26, 2, 0, iCurrentMotionStyleIndex)
  80.   
  81.   -- VisualStyles Params: castNum, default, nItems, channel
  82.   if the machineType < 256 then
  83.     mInit(goVisualStyles, the number of cast "CreditsVisualStylesMac", ¼
  84.                iCurrentVisualStyleIndex, 8, 19)
  85.   else
  86.     mInit(goVisualStyles, the number of cast "CreditsVisualStylesPC", ¼
  87.                iCurrentVisualStyleIndex, 8, 19)
  88.   end if
  89.   
  90.   -- For keystroke validity checking
  91.   set the keydownscript =  "mCheckKey(goCredits)"
  92.   
  93. end mInit 
  94.  
  95. on mSetFieldFocus me, oWhom
  96.   set where = getOne(ioFieldList, oWhom)
  97.   if where = 0 then
  98.     alert("Internal error - mSetFieldFocus could not find object")
  99.     return
  100.   end if
  101.   
  102.   set iFieldFocus = where  
  103.   set ioFieldFocus = GetAt(ioFieldList, iFieldFocus)
  104.   
  105. end mSetFieldFocus
  106.  
  107. on mCheckKey me
  108.   if the Key = TAB then -- change focus to the next field
  109.     set iFieldFocus = IncrMod(iFieldFocus, count(ioFieldList))
  110.     set ioFieldFocus = GetAt(ioFieldList, iFieldFocus)
  111.     pass  -- pass the event so the hilight goes to the next field  
  112.   else
  113.     if iFieldFocus = 1 then -- the text entry field, allow anything
  114.       pass
  115.     else  -- numeric fields, only allow digits
  116.       if (offset(the key, "0123456789") > 0) or (the key = BACKSPACE)  then
  117.         pass
  118.       else
  119.         dontPassEvent -- restrict only to digits.
  120.       end if
  121.     end if
  122.   end if
  123. end mCheckKey
  124.  
  125. on mSetNewMotionStyle me, theNewStyleIndex
  126.   set iCurrentMotionStyleIndex = theNewStyleIndex
  127. end mSetNewMotionStyle
  128.  
  129. on mSetNewVisualStyle me, theNewStyleIndex
  130.   set iCurrentVisualStyleIndex = theNewStyleIndex
  131. end mSetNewVisualStyle
  132.  
  133.  
  134.  
  135. on mValidate me
  136.   -- Attempt to validate the last field of focus
  137.   set lastFieldOKFlag = mValidate(ioFIeldFocus)
  138.   return lastFieldOKFlag
  139. end mValidate
  140.  
  141. -- Check to ensure that all lines have a colon in them
  142. on mCheckFormat me
  143.   set theText = field("CreditsText")
  144.   set nLines = the number of lines in theText
  145.   repeat with thisLine = 1 to nLines
  146.     if offset(":",  line thisLine of field("CreditsText")) = 0 then
  147.       alert("Line" && thisLine && "of the Credits text does not contain a colon.")
  148.       return FALSE
  149.     end if   
  150.   end repeat
  151.   return TRUE
  152. end mCheckFormat
  153.  
  154.  
  155. on mParseLine me, theLineToParse, theHeaderFont, theHeaderSize, theBodyFont, theBodySize
  156.   global gCastNumTextAsBitmap
  157.   
  158.   set where = offset(":", theLineToParse)
  159.   set theHeaderText = char 1 to where of theLineToParse
  160.   set nChars = the number of chars in theLineToParse
  161.   set theBodyText = char (where + 1) to nChars of theLineToParse
  162.   
  163.   
  164.   set castNumHeader = mModifyRichTextCM(goCastMgr, ¼
  165.                 theHeaderText, theHeaderFont, theHeaderSize)
  166.   if castNumHeader = 0 then  -- error
  167.     return FALSE
  168.   end if  
  169.   
  170.   -- The following does an effective "Convert to bitmap" into a 
  171.   -- known bitmap cast member to get size info.
  172.   set the picture of member gCastNumTextAsBitmap = ¼
  173.         the picture of member castNumHeader
  174.   set widthHeader = the width of member gCastNumTextAsBitmap
  175.   set heightHeader = the height of member castNumHeader / ¼
  176.                                                 the number of lines in (the text of member castNumHeader)
  177.   
  178.   --  Create a cast member in the stage movie  
  179.   set castNumHeaderTarget = mFindFreeCastRun(goCastMgr, 1, 1)
  180.   copyToClipBoard member castNumHeader
  181.   tell the stage
  182.     pasteClipboardInto member castNumHeaderTarget
  183.     set the name of member castNumHeaderTarget  = "RichText" && string(the ticks)
  184.   end tell
  185.   
  186.   -- And again for the Body
  187.   set castNumBody = mModifyRichTextCM(goCastMgr, ¼
  188.                 theBodyText, theBodyFont, theBodySize)
  189.   if castNumBody = 0 then  -- error
  190.     return FALSE
  191.   end if  
  192.   
  193.   set the picture of member gCastNumTextAsBitmap = ¼
  194.         the picture of member castNumBody
  195.   set widthBody = the width of member gCastNumTextAsBitmap
  196.   set heightBody = the height of member castNumBody / ¼
  197.                                                 the number of lines in (the text of member castNumBody)
  198.   
  199.   --  Create a cast member in the stage movie  
  200.   set castNumBodyTarget = mFindFreeCastRun(goCastMgr, 1, 1)
  201.   copyToClipBoard member castNumBody
  202.   tell the stage
  203.     pasteClipboardInto member castNumBodyTarget
  204.     set the name of member castNumBodyTarget  = "RichText" && string(the ticks)
  205.   end tell
  206.   return [castNumHeaderTarget, castNumBodyTarget, widthHeader, heightHeader,¼
  207.               widthBody, heightBody]
  208. end mParseLine
  209.  
  210. on mSplitAndCreate2 me, theTextToParse, theHeaderFont, theHeaderSize, ¼
  211.   theBodyFont, theBodySize
  212.   global gCastNumTextAsBitmap
  213.   
  214.   
  215.   set nLines = the number of lines in theTextToParse
  216.   set theHeaderText = ""
  217.   set theBodyText = ""
  218.   repeat with thisLine = 1 to nLines
  219.     set theLineToParse = line thisLine of theTextToParse
  220.     set where = offset(":", theLineToParse)
  221.     set theHeaderPart = char 1 to where of theLineToParse
  222.     set nChars = the number of chars in theLineToParse
  223.     set theBodyPart = char (where + 1) to nChars of theLineToParse
  224.     
  225.     if thisLine > 1 then
  226.       set theHeaderText = theHeaderText & RETURN
  227.       set theBodyText = theBodyText & RETURN
  228.     end if
  229.     set theHeaderText = theHeaderText & theHeaderPart
  230.     set theBodyText = theBodyText & theBodyPart
  231.   end repeat
  232.   
  233.   set castNumHeader = mModifyRichTextCM(goCastMgr, ¼
  234.                 theHeaderText, theHeaderFont, theHeaderSize)
  235.   if castNumHeader = 0 then  -- error
  236.     return FALSE
  237.   end if  
  238.   
  239.   -- The following does an effective "Convert to bitmap" into a 
  240.   -- known bitmap cast member to get size info.
  241.   set the picture of member gCastNumTextAsBitmap = ¼
  242.         the picture of member castNumHeader
  243.   set widthHeader = the width of member gCastNumTextAsBitmap
  244.   set heightHeader = the height of member castNumHeader
  245.   
  246.   --  Create a cast member in the stage movie  
  247.   set castNumHeaderTarget = mFindFreeCastRun(goCastMgr, 1, 1)
  248.   copyToClipBoard member castNumHeader
  249.   tell the stage
  250.     pasteClipboardInto member castNumHeaderTarget
  251.     set the name of member castNumHeaderTarget  = "RichText" && string(the ticks)
  252.   end tell
  253.   
  254.   -- And again for the Body
  255.   set castNumBody = mModifyRichTextCM(goCastMgr, ¼
  256.                 theBodyText, theBodyFont, theBodySize)
  257.   if castNumBody = 0 then  -- error
  258.     return FALSE
  259.   end if  
  260.   
  261.   set the picture of member gCastNumTextAsBitmap = ¼
  262.         the picture of member castNumBody
  263.   set widthBody = the width of member gCastNumTextAsBitmap
  264.   set heightBody = the height of member castNumBody 
  265.   
  266.   --  Create a cast member in the stage movie  
  267.   set castNumBodyTarget = mFindFreeCastRun(goCastMgr, 1, 1)
  268.   copyToClipBoard member castNumBody
  269.   tell the stage
  270.     pasteClipboardInto member castNumBodyTarget
  271.     set the name of member castNumBodyTarget  = "RichText" && string(the ticks)
  272.   end tell
  273.   return [castNumHeaderTarget, castNumBodyTarget, widthHeader, heightHeader,¼
  274.               widthBody, heightBody]
  275. end mSplitAndCreate2
  276.  
  277. on mCreate me
  278.   global goMarkFrame
  279.   global goMotionStyles
  280.   global goVisualStyles
  281.   global goScoreMgr
  282.   global goCastMgr
  283.   global gDevelopmentFlag
  284.   global gCastNumTextAsBitmap
  285.   global goPlatform
  286.   
  287.   if not(mValidate(me)) then
  288.     return
  289.   end if
  290.   if the last char of field "CreditsText" = RETURN then
  291.     delete the last char of field "CreditsText"
  292.   end if
  293.   if field("CreditsText") = EMPTY then
  294.     alert("Please enter some text for the Credit.")
  295.     return
  296.   end if
  297.   if not(mCheckFormat(me)) then
  298.     return
  299.   end if
  300.   
  301.   
  302.   tell the stage
  303.     set theStageFrame = the frame
  304.   end tell
  305.   
  306.   set castNumVisualStyle = mGetCastNum(goVisualStyles, iCurrentVisualStyleIndex)
  307.   set theVisualStyleName = the name of cast castNumVisualStyle
  308.   set theHeaderFont = word 2 of theVisualStyleName
  309.   set theHeaderSize = word 3 of theVisualStyleName
  310.   set theBodyFont = word 4 of theVisualStyleName
  311.   set theBodySize = word 5 of theVisualStyleName
  312.   set theSeconds = integer(field "Seconds")
  313.   
  314.   set fps = integer(field "FPS")
  315.   set nFrames = integer(theSeconds * fps)
  316.   set delayEnter = integer(field "DelayEnter")
  317.   set delayHold = integer(field "DelayHold")
  318.   --  set nCycles = integer(field "Cycles")
  319.   set markFirst = mGetValue(goMarkFrame)
  320.   
  321.   
  322.   set theForeColor  = 255
  323.   set theBackColor  = 0
  324.   
  325.   if (iCurrentMotionStyleIndex = ikMotionScrollingUp)   then 
  326.     set thisList = mSplitAndCreate2(me, field "CreditsText",¼
  327.                            theHeaderFont, theHeaderSize, theBodyFont, theBodySize)
  328.     if thisList = FALSE then --error
  329.       return
  330.     end if
  331.     -- thisList contains the following for the line:
  332.     --  [castNumHeaderTarget, castNumBodyTarget, widthHeader, heightHeader,¼
  333.               widthBody, heightBody]
  334.     set castNumHeader = getAt(thisList, 1)
  335.     set castNumBody = getAt(thisList, 2)
  336.     set theWidthHeader = getAt(thisList, 3)
  337.     set theHeightHeader = getAt(thisList, 4)
  338.     set theWidthBody = getAt(thisList, 5)
  339.     set theHeightBody = getAt(thisList, 6)
  340.     
  341.     -- Call the ScoreMgr to set up the score, # of frames, and 2 channel
  342.     if delayEnter > 0 then
  343.       set nTotalFrames = nFrames + 1
  344.     else set nTotalFrames = nFrames
  345.     if not(mInit(goScoreMgr, nTotalFrames, 2)) then
  346.       return
  347.     end if
  348.     
  349.     set chHeader = mGetNextSelectedChannel(goScoreMgr)
  350.     set chBody = mGetNextSelectedChannel(goScoreMgr)
  351.     set theFrameNum = mGetStartFrame(goScoreMgr)
  352.     
  353.     -- initialize list of frames to record in
  354.     set frameList  = []
  355.     repeat with i = theFrameNum  to  (theFrameNum + nTotalFrames  - 1)
  356.       add(frameList, [i])
  357.     end repeat
  358.     
  359.     -- Mark first frame upon request
  360.     if markFirst  then
  361.       set theLabel  = "AW.Credit." & word 1 of the text of field "CreditsText" & " " & ¼
  362.               mGetGeneratedScoreSelection(goScoreMgr)
  363.       set firstFrame = getAt(frameList, 1)
  364.       add(firstFrame,  [#label, theLabel])
  365.       setAt(frameList, 1, firstFrame)
  366.     end if
  367.     
  368.     set relFrameCount = 1
  369.     --insert delay if necessary
  370.     set firstFrame = getAt( frameList, relFrameCount)
  371.     set secondFrame = getAt( frameList, relFrameCount + 1)
  372.     if delayEnter > 0 then
  373.       add(firstFrame, [#tempo, -delayEnter])
  374.       add(secondFrame, [#tempo, fps])
  375.       setAt(frameList, relFrameCount, firstFrame)
  376.       setAt(frameList,relFrameCount + 1, secondFrame)
  377.       set theFrameNum to theFrameNum + 1
  378.       set relFrameCount = relFrameCount + 1
  379.     else 
  380.       add(firstFrame, [#tempo, fps])
  381.       add(secondFrame, [#tempo, 0])
  382.       setAt(frameList, relFrameCount, firstFrame)
  383.       setAt(frameList,relFrameCount + 1, secondFrame)
  384.     end if
  385.     
  386.     
  387.     set theStageWidth = mGetStageWidth(goScoreMgr)
  388.     set theStageHeight = mGetStageHeight(goScoreMgr)
  389.     set totalTextWidth = theWidthHeader + theWidthBody
  390.     set xLocHeader = integer((theStageWidth / 2) - (totalTextWidth / 2))
  391.     set xLocBody = integer(xLocHeader + theWidthHeader)
  392.     
  393.     set maxHeight = max(theHeightHeader, theHeightBody)
  394.     set yStart = theStageHeight - 10
  395.     set yEnd = 0 - maxHeight - 10 
  396.     set yInc = float( yEnd - yStart ) / float(nFrames) 
  397.     
  398.     -- Generate the score fragment
  399.     set yLoc = yStart
  400.     repeat with thisFrame = 1 to nFrames
  401.       set currentFrame = getAt(frameList, relFrameCount)
  402.       add(currentFrame, [#sprite, chHeader, castNumHeader,  theForeColor, theBackColor, xLocHeader, yLoc, 0, 0])     
  403.       add(currentFrame, [#sprite, chBody, castNumBody,  theForeColor, theBackColor, xLocBody, yLoc, 0, 0])     
  404.       --      mWriteSpriteRange(goScoreMgr, theFrameNum, chHeader, castNumHeader, ¼
  405. --                     theForeColor, theBackColor, xLocHeader, yLoc, 0, 0)      
  406.       --      mWriteSpriteRange(goScoreMgr, theFrameNum, chBody, castNumBody, ¼
  407. --                     theForeColor, theBackColor, xLocBody, yLoc, 0, 0)
  408.       setAt(frameList, relFrameCount, currentFrame)
  409.       set theFrameNum = theFrameNum + 1
  410.       set relFrameCount = relFrameCount + 1
  411.       set yLoc = integer(yLoc + yInc)
  412.     end repeat
  413.     
  414.   else  -- ikMotionIndividual
  415.     -- Call the ScoreMgr to set up the score, # of frames, and 2 channels
  416.     
  417.     set nSourceLines = the number of lines in field "CreditsText"
  418.     set nFrames = (delayEnter  + 1)*nSourceLines
  419.     if not(mInit(goScoreMgr, nFrames, 2)) then
  420.       return
  421.     end if
  422.     
  423.     set maxHeaderWidth = 0
  424.     set maxBodyWidth = 0
  425.     set castNumList = []
  426.     repeat with thisLine = 1 to nSourceLines
  427.       set thisList = mParseLine(me, line thisLine of field "CreditsText",¼
  428.                            theHeaderFont, theHeaderSize, theBodyFont, theBodySize)
  429.       if thisList = FALSE then --error
  430.         return
  431.       end if
  432.       -- thisList contains the following for the line:
  433.       --  [castNumHeaderTarget, castNumBodyTarget, widthHeader, heightHeader,¼
  434.               widthBody, heightBody]
  435.       set thisCastNumHeaderTarget = getAt(thisList, 1)
  436.       set thisCastNumBodyTarget = getAt(thisList, 2)
  437.       set thisWidthHeader = getAt(thisList, 3)
  438.       set thisHeightHeader = getAt(thisList, 4)
  439.       set thisWidthBody = getAt(thisList, 5)
  440.       set thisHeightBody = getAt(thisList, 6)
  441.       if thisWidthHeader > maxHeaderWidth then
  442.         set maxHeaderWidth  = thisWidthHeader
  443.       end if
  444.       if thisWidthBody > maxBodyWidth then
  445.         set maxBodyWidth  = thisWidthBody
  446.       end if
  447.       add(castNumList, [thisCastNumHeaderTarget, thisCastNumBodyTarget])
  448.     end repeat
  449.     
  450.     set theForeColor  = 255
  451.     set theBackColor  = 0
  452.     
  453.     set chHeader = mGetNextSelectedChannel(goScoreMgr)
  454.     set chBody = mGetNextSelectedChannel(goScoreMgr)
  455.     set theFrameNum = mGetStartFrame(goScoreMgr)
  456.     
  457.     -- initialize list of frames to record in
  458.     set frameList  = []
  459.     repeat with i = theFrameNum  to  (theFrameNum + nFrames  - 1)
  460.       add(frameList, [i])
  461.     end repeat
  462.     
  463.     -- Mark first frame upon request
  464.     if markFirst  then
  465.       set theLabel  = "AW.Credit." & word 1 of the text of field "CreditsText" & " " & ¼
  466.               mGetGeneratedScoreSelection(goScoreMgr)
  467.       set firstFrame = getAt(frameList, 1)
  468.       add(firstFrame,  [#label, theLabel])
  469.       setAt(frameList, 1, firstFrame)
  470.     end if
  471.     set relFrameCount = 1
  472.     
  473.     set theStageWidth = mGetStageWidth(goScoreMgr)
  474.     set theStageHeight = mGetStageHeight(goScoreMgr)
  475.     set totalTextWidth = maxHeaderWidth + maxBodyWidth
  476.     set xLocHeader = integer((theStageWidth / 2) - (totalTextWidth / 2))
  477.     set xLocBody = integer(xLocHeader + maxHeaderWIdth)
  478.     set yLoc = integer(theStageHeight / 2)
  479.     
  480.     repeat with thisLine = 1 to nSourceLines
  481.       set currentFrame = getAt(frameList, relFrameCount)
  482.       add(currentFrame, [#tempo, fps])
  483.       setAt(frameList, relFrameCount, currentFrame)
  484.       set thisCastNumList = getAt(castNumList, thisLine)
  485.       set castNumHeader = getAt(thisCastNumList, 1)
  486.       set castNumBody = getAt(thisCastNumList, 2)            
  487.       
  488.       repeat with thisFrame = 1 to delayEnter
  489.         
  490.         -- Generate the score fragment
  491.         set currentFrame = getAt(frameList, relFrameCount)
  492.         add(currentFrame, [#sprite, chHeader, castNumHeader,  theForeColor, theBackColor, xLocHeader, yLoc, 0, 0])   
  493.         add(currentFrame, [#sprite, chBody, castNumBody, theForeColor, theBackColor, xLocBody, yLoc, 0, 0])      
  494.         --        mWriteSpriteRange(goScoreMgr, theFrameNum, chHeader, castNumHeader, ¼
  495. --                     theForeColor, theBackColor, xLocHeader, yLoc, 0, 0)      
  496.         --        mWriteSpriteRange(goScoreMgr, theFrameNum, chBody, castNumBody, ¼
  497. --                     theForeColor, theBackColor, xLocBody, yLoc, 0, 0)      
  498.         setAt(frameList, relFrameCount, currentFrame)
  499.         set theFrameNum = theFrameNum + 1
  500.         set relFrameCount = relFrameCount  + 1
  501.       end repeat
  502.       
  503.       if  delayHold > 0  then 
  504.         set currentFrame = getAt(frameList, relFrameCount)
  505.         add(currentFrame, [#tempo, delayHold])
  506.         add(currentFrame, [#sprite, chHeader, castNumHeader,  theForeColor, theBackColor, xLocHeader, yLoc, 0, 0])   
  507.         add(currentFrame, [#sprite, chBody, castNumBody, theForeColor, theBackColor, xLocBody, yLoc, 0, 0]) 
  508.         setAt(frameList, relFrameCount, currentFrame)
  509.         set relFrameCount = relFrameCount  + 1
  510.         set theFrameNum = theFrameNum + 1
  511.       end if  
  512.     end repeat
  513.   end if
  514.   
  515.   mWriteFrame(goScoreMgr, frameList)
  516.   
  517.   set labelName = "Credits" & goPlatform
  518.   go  label(labelName) + 2  -- to display reselect button
  519.   
  520.   if not(gDevelopmentFlag) then
  521.     tell the stage
  522.       go frame theStageFrame
  523.     end tell
  524.   end if 
  525.   
  526.   mClean(goScoreMgr)
  527.   
  528. end mCreate
  529.  
  530.  
  531.  
  532. on mCleanup me
  533.   global goMotionStyles
  534.   global goSeconds
  535.   global goFPS
  536.   global goDelayEnter
  537.   global goDelayHold
  538.   --global goCycles
  539.   global goMarkFrame
  540.   
  541.   mCleanup(goMotionStyles)
  542.   
  543.   set iSaveSeconds =  mGetValue(goSeconds)
  544.   set iSaveFPS = mGetValue(goFPS)
  545.   set iSaveDelayEnter = mGetValue(goDelayEnter)
  546.   set iSaveDelayHold = mGetValue(goDelayHold)
  547.   --set iSaveCycles = mGetValue(goCycles)  
  548.   set iSaveMark = mGetValue(goMarkFrame)  
  549.   mCleanup(goMarkFrame)
  550. end mCleanup
  551.  
  552.